
var util = new require("./utils/util.js");//引用解析URL参数文件
// var hash = new require("./utils/hash.js");//引用解析URL参数文件
// var md5 = new require("./utils/md5.js");//引用解析URL参数文件
var globalData = {
  VERSION: '0.0.1',
  // URL: 'http://192.168.0.114:8800/api',
  URL:'https://caskhome.cn/api',
  openid: '',
  userInfo:[],//用户信息
};
//app.js
App({
  onLaunch: function () {
    // 展示本地存储能力
    var logs = wx.getStorageSync('logs') || []
    var way = wx.getStorageSync('way') || []
    var wayname = wx.getStorageSync('wayname') || []
    var usercodes = wx.getStorageSync('usercodes') || []
    var tk = wx.getStorageSync('tk') || []
    //var ismsign = wx.getStorageSync('ismsign')||[]
    var ismsign = false;
    //logs.unshift(Date.now())
    //wx.setStorageSync('logs', logs)
    // 登录
    wx.login({
      success: res => {
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
        
        // wx.request({
        //   url: 'https://caskhome.cn/login/login?code=' + res.code,
        //   data: {

        //   },
        //   header: {
        //     'content-type': 'application/json' // 默认值
        //   },
        //   method: 'get',
        //   dataType: 'json',
        //   success: function (res) {
        //     //从数据库获取用户信息
        //     console.log(res.data.data.openid+"openid")
        //     wx.setStorageSync('usercodes', res.data.data.openid)
            
        //   }
        // })
        
      }
    })
    // 获取用户信息
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称，不会弹框
          wx.getUserInfo({
            success: res => {
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo
              var aty = JSON.stringify(res.userInfo)
              wx.setStorageSync('name', res.userInfo.nickName)
              wx.setStorageSync('avatarurl', res.userInfo.avatarUrl)
              wx.switchTab({
                url: '../index/index'
              });
              // 由于 getUserInfo 是网络请求，可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                console.log(this.userInfoReadyCallback(res)+"函数")
                this.userInfoReadyCallback(res)
                
              }
            }
          })
        }
      }
    })
  },
  globalData: {
    userInfo: null
  }
})

var appConfig = {
  globalData: globalData,

 

  // 后台
  onHide: function () {
      console.log("-----onHide----");
  },

  // App 启动后执行
  onShow: function () {
    // this.getOpenid()
  },

  getOpenid: function (again) {
    return new Promise((resolve, reject)=>{
      var that = this
      var brandId = that.globalData.brandId;
      wx.login({
        success: function (res) {
          wx.setStorageSync("code", res.code )
          console.log(res.code+"从而")
        
          wx.request({
            url: that.globalData.URL + '/login/login?code=' + res.code,
            success: function (res) {``
            console.log(res)
              if (res.data.code == '200') {
               
                that.globalData.openid = res.data.data.openid
                that.saveHeaderData(res.data.data);  //保存HeaderData
                that.newRegist()
                resolve(true)
              } else {
                wx.showToast({
                  title: '未知错误,请重试',
                  icon: 'none',
                  duration: 2000
                })
              }
            }
          })
        }
      })
    })
  },

  newRegist(){
    console.log()
      var that = this;
   
      var data = {
        openid: that.globalData.openid,
        nickname: wx.getStorageSync('name'),
        avatar: wx.getStorageSync('avatarurl'),
      };
      //注册操作
      // that.request({url:'/login/user', data:data, success: function(res){
      //   console.log(res.data.uid,'hjghjh')
      //   wx.setStorageSync('uid', res.data.uid)
      //     // if (res.code == '200') {
      //     //   wx.reLaunch({
      //     //     url: '/pages/index/index' 
      //     //   })
      //     //   return
      //     // } 
      //     // console.log('未知错误,请重试')
      //     // wx.showToast({
      //     //   title: '未知错误,请重试',
      //     //   icon: 'none',
      //     //   duration: 2000
      //     // })
      // }});
  },

  //保存HeaderData
  saveHeaderData: function(res) {
    return new Promise((resolve, reject)=>{
      this.globalData.openid = res.openid
      this.globalData.session_key = res.session_key
      resolve(true)
    })
  },
  //获得请求的HEADER
  header: function () {
    var that = this

    var header = {
        charset: 'UTF-8',
        openid: that.globalData.openid,
        session_key: that.globalData.session_key,
        token:wx.getStorageSync('token')
    }

    return header;
  },


  //---------------------------------------Part3.请求统一封装---------------------------------------
  //请求统一封装
  async request (params) {
    var that = this

    await that.checkSession()
    .then((status)=>{
      if(!status) that.getOpenid()
    })
    .catch((e)=>{
      console.log(e)
    })

    if (!params.method) {
      params.method = 'GET'
    }    

    var data = params.data
    // await this.checkToken()  //判斷token是否過期
    wx.request({
      url: that.globalData.URL + params.url,
      method: params.method,
      data: data,
      header: that.header(),
      success: (res) => {
        let code = res.data.code

        // 正确返回数据进行回调，错误则直接提示
        if (code == '200') {
          params.success(res.data)
          return
        }
        else{
          params.success(res.data)
          return
        }
        // wx.showToast({
        //   title: res.data.message,
        //   icon: 'none'
        // })
        
      },
      fail: (err) => {
        wx.showToast({
          title: '调用API出问题，请稍后再试',
          icon: 'none'
        })
      },
      complete: () => {
        (params.complete && typeof(params.complete) === 'function') && params.complete()
      }
    })
  },
  getAuth(){//新用户授权、注册、跳转角色对应的页面
    return new Promise((resolve, reject)=>{
      wx.getSetting({
          success(res) {
              if (!res.authSetting['scope.userInfo']) {
                  console.log('去授权')
                  wx.reLaunch({
                      url: '/pages/Auth/index'
                  })
                  resolve(false)
              }else{
                resolve(true)
              }
          }
      })
    })
  },
  checkSession(){
    let that = this
    return new Promise((resolve, reject)=>{
      wx.checkSession({
        success () {
          resolve(true)
          //session_key 未过期，并且在本生命周期一直有效
        },
        fail () {
          // session_key 已经失效，需要重新执行登录流程
          console.log(222)
          resolve(false)
        }
      })
    })
  },

  // //重写分享方法
  // share: function () {
  //     var that = this;
  //     //监听路由切换
  //     //间接实现全局设置分享内容
  //     wx.onAppRoute(function (res) {
  //         //获取加载的页面
  //         let pages = getCurrentPages(),
  //             //获取当前页面的对象
  //             view = pages[pages.length - 1],
  //             data;
  //         if (view) {
  //             data = view.data;
  //             console.log('是否重写分享方法', data.isOverShare);
  //             if (!data.isOverShare) {
  //                 data.isOverShare = true;
  //                 view.onShareAppMessage = function () {
  //                     //分享配置
  //                     return {
  //                         title: '好友推荐给你导购动力，快看看吧～',
  //                         path: '/pages/Home/index',
  //                         imageUrl: '/images/share.png'
  //                     };
  //                 }
  //             }
  //         }
  //     })
  // }
}

App(appConfig)